home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Snippets / DirectoryPopup 1.0 / □□□DPSample Source / SimpleAppEvents.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-03  |  4.1 KB  |  215 lines  |  [TEXT/CWIE]

  1. /*
  2.  *    Project:        SimpleApp
  3.  *
  4.  *    Filename:         SimpleAppEvents.c
  5.  *
  6.  *    Author:         Marco Piovanelli
  7.  *
  8.  *    Revision History:
  9.  *
  10.  *            1996.05.24                MP        created this file
  11.  *
  12.  */
  13.  
  14. #include "SimpleApp.h"
  15.  
  16. //        statics
  17.  
  18. UInt32 sSleepTime = 0 ;
  19. RgnHandle sMouseRgn = nil ;
  20.  
  21. void ProcessEvent ( )
  22. {
  23.     EventRecord event ;
  24.     Boolean gotEvent ;
  25.     
  26.     gotEvent = WaitNextEvent ( everyEvent, & event, sSleepTime, sMouseRgn ) ;
  27.     
  28.     switch ( event . what )
  29.     {
  30.         case nullEvent:
  31.             DoNullEvent ( event ) ;
  32.             break ;
  33.             
  34.         case mouseDown:
  35.             DoMouseDownEvent ( event ) ;
  36.             break ;
  37.         
  38.         case keyDown: 
  39.         case autoKey:
  40.             DoKeyDownEvent ( event ) ;
  41.             break ;
  42.         
  43.         case updateEvt:
  44.         case activateEvt:
  45.             DoWindowEvent ( event ) ;
  46.             break ;
  47.         
  48.         case diskEvt:
  49.             DoDiskEvent ( event ) ;
  50.             break ;
  51.         
  52.         case osEvt:
  53.             DoOSEvent ( event ) ;
  54.             break ;
  55.         
  56.         case kHighLevelEvent:
  57.             DoHighLevelEvent ( event ) ;
  58.             break ;
  59.         
  60.         default:
  61.             break ;
  62.     }
  63.     
  64.     if ( gotEvent )
  65.     {
  66.         sSleepTime = 0 ;        // force early idle after non-null event
  67.     }
  68. }
  69.  
  70. void DoNullEvent ( EventRecord & event )
  71. {
  72. #pragma unused ( event )
  73.  
  74.     sSleepTime = kDefaultSleep ;
  75. }
  76.  
  77. void DoMouseDownEvent ( EventRecord & event )
  78. {
  79.     WindowRef macWindow ;
  80.     SInt16 partCode ;
  81.     
  82.     partCode = FindWindow ( event . where, & macWindow ) ;
  83.     
  84.     switch ( partCode )
  85.     {
  86.         case inMenuBar:
  87.             PrepareMenus ( ) ;
  88.             DoMenuChoice ( MenuSelect ( event . where ) ) ;
  89.             break ;
  90.         
  91.         case inSysWindow:
  92.             SystemClick ( & event, macWindow ) ;
  93.             break ;
  94.         
  95.         case inContent:
  96.             if ( macWindow != FrontWindow ( ) )
  97.             {
  98.                 SelectWindow ( macWindow ) ;
  99.             }
  100.             else
  101.             {
  102.                 Point hitPt = event . where ;
  103.                 SetPortWindowPort ( macWindow ) ;
  104.                 GlobalToLocal ( & hitPt ) ;
  105.                 DoContent ( macWindow, hitPt, event ) ;
  106.             }
  107.             break ;
  108.         
  109.         case inDrag:
  110.             DoDrag ( macWindow, event . where, event ) ;
  111.             break ;
  112.         
  113.         case inGrow:
  114.             DoGrow ( macWindow, event . where, event ) ;
  115.             break ;
  116.         
  117.         case inGoAway:
  118.             if ( TrackGoAway ( macWindow, event . where ) )
  119.             {
  120.                 DoGoAway ( macWindow, event ) ;
  121.             }
  122.             break ;
  123.         
  124.         case inZoomIn:
  125.         case inZoomOut:
  126.             if ( TrackBox ( macWindow, event . where, partCode ) )
  127.             {
  128.                 DoZoom ( macWindow, partCode, event ) ;
  129.             }
  130.             break ;
  131.  
  132.         default:
  133.             break ;            
  134.     }
  135. }
  136.  
  137. void DoKeyDownEvent ( EventRecord & event )
  138. {
  139.     char key = event . message & charCodeMask ;
  140.  
  141.     if ( ( event . modifiers & cmdKey ) && ( key > 0x20 ) )
  142.     {
  143.         PrepareMenus ( ) ;
  144.         DoMenuChoice ( MenuKey ( key ) ) ;
  145.     }
  146. }
  147.  
  148. void DoWindowEvent ( EventRecord & event )
  149. {
  150.     WindowRef macWindow = ( WindowRef ) event . message ;
  151.     
  152.     switch ( event . what )
  153.     {
  154.         case updateEvt :
  155.             BeginUpdate ( macWindow ) ;
  156.             DoUpdate ( macWindow, GetWindowPort ( macWindow ) -> visRgn ) ;
  157.             EndUpdate ( macWindow ) ;
  158.             break ;
  159.         
  160.         case activateEvt :
  161.             DoActivate ( macWindow, ( event . modifiers ) & activeFlag != 0 ) ;
  162.             break ;
  163.     }
  164. }
  165.  
  166. void DoDiskEvent ( EventRecord & event )
  167. {
  168.     if ( ( event . message >> 16 ) != noErr )
  169.     {
  170.         Point dialogCorner = { 80, 112 } ;
  171.         DIBadMount ( dialogCorner, event . message ) ;        
  172.     }
  173. }
  174.  
  175. void DoOSEvent ( EventRecord & event )
  176. {
  177.     WindowRef window ;
  178.  
  179.     switch ( ( event . message & osEvtMessageMask ) >> 24 )
  180.     {
  181.         case suspendResumeMessage :
  182.             if ( ( window = FrontWindow ( ) ) != nil )
  183.             {
  184.                 DoActivate ( window, ( event . message & resumeFlag ) != 0 ) ;
  185.             }
  186.             break;
  187.  
  188.         case mouseMovedMessage :
  189.         default :
  190.             break;
  191.     }
  192. }
  193.  
  194. void DoHighLevelEvent ( EventRecord & event )
  195. {
  196.     AEProcessAppleEvent ( & event ) ;
  197. }
  198.  
  199. OSErr InitializeEvents ( )
  200. {
  201.     OSErr err = noErr ;
  202.     
  203.     //    install Apple event handlers for the Required Suite
  204.     if ( ( err = AEInstallEventHandler ( kCoreEventClass, kAEOpenApplication, NewAEEventHandlerProc ( HandleOpenApp ), 0, false ) ) != noErr )
  205.         return err ;
  206.     if ( ( err = AEInstallEventHandler ( kCoreEventClass, kAEOpen, NewAEEventHandlerProc ( HandleOpenDoc ), 0, false ) ) != noErr )
  207.         return err ;
  208.     if ( ( err = AEInstallEventHandler ( kCoreEventClass, kAEPrint, NewAEEventHandlerProc ( HandleOpenDoc ), 0, false ) ) != noErr )
  209.         return err ;
  210.     if ( ( err = AEInstallEventHandler ( kCoreEventClass, kAEQuitApplication, NewAEEventHandlerProc ( HandleQuit ), 0, false ) ) != noErr )
  211.         return err ;
  212.     
  213.     return noErr ;
  214. }
  215.